from abc import ABC

from src.application.common.interfaces.uow import UnitOfWork
from src.application.order.interfaces.reader.order_reader import OrderReader
from src.application.order.interfaces.repo.order_repo import OrderRepo
from src.application.proxy.interfaces.reader.proxy_reader import ProxyReader
from src.application.proxy.interfaces.repo.proxy_repo import ProxyRepo
from src.application.user.interfaces import UserReader
from src.application.user.interfaces.repo.user_repo import UserRepo


class OrderUoW(UnitOfWork, ABC):
    def __init__(
        self,
        order_repo: OrderRepo,
        order_reader: OrderReader,
        proxy_repo: ProxyRepo,
        proxy_reader: ProxyReader,
        user_repo: UserRepo,
        user_reader: UserReader,
    ) -> None:
        self.order_repo = order_repo
        self.order_reader = order_reader
        self.proxy_repo = proxy_repo
        self.proxy_reader = proxy_reader
        self.user_repo = user_repo
        self.user_reader = user_reader
